package 尊享面试.滑动窗口;

import java.util.HashMap;

public class a159至多包含两个不同字符的最长子串 {
    static class Solution {
        public int lengthOfLongestSubstringTwoDistinct(String s) {
            int len = s.length();
            int i = 0;
            int j = 0;
            int cnt = 0;
            HashMap<Character, Integer> map = new HashMap<>();
            int ans = 0;
            while (j < len) {
                char chj = s.charAt(j);
                Integer cntj = map.getOrDefault(chj,0);
                if (cntj == 0) {
                    cnt++;
                }
                map.put(chj, cntj + 1);
                while (i <= j && cnt > 2) {
                    char chi = s.charAt(i);
                    Integer cnti = map.get(chi);
                    map.put(chi, cnti - 1);
                    if (cnti - 1 == 0) {
                        cnt--;
                    }
                    i++;
                }
                ans = Math.max(j - i + 1, ans);
                j++;
            }
            return ans;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        String s = "abZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYX";
        System.out.println(solution.lengthOfLongestSubstringTwoDistinct(s));
    }
}
